package main

import (
	"context"
	"fmt"
	"google.golang.org/grpc"
	"google.golang.org/grpc/credentials"
	"grpc-demo/tls/proto"
	pb "grpc-demo/tls/proto"
	"log"
)

var grpcClient pb.GreeterClient

func main() {
	//从输入的证书文件中为客户端构造TLS凭证
	creds, err := credentials.NewClientTLSFromFile("certs/test.pem", "*.org.haha.com")
	if err != nil {
		log.Fatal(err)
	}
	// 连接服务器，配置连接级别的安全凭证
	conn, err := grpc.Dial(":50051", grpc.WithTransportCredentials(creds))
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close()

	// 建立gRPC连接
	grpcClient = proto.NewGreeterClient(conn)

	// 客户端调用服务端的SayHello方法，并返回结果
	// 同时传入了一个 context.Context ，在有需要时可以让我们改变RPC的行为，比如超时/取消一个正在运行的RPC
	r, err := grpcClient.SayHello(context.Background(), &proto.HelloRequest{Name: "bobby"})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(r.Result)
}
